CipherMyText
============
CipherMyText is a set of tools for enciphering messages. Previously the tools were written in Python and only worked with the [autokey cipher](https://en.wikipedia.org/wiki/Autokey_cipher), but the tools have been ported to Scheme and are designed in a more modular way to allow them to be used with a wide array of mono- and polyalphabetic pen-and-paper ciphers.

Dependencies
------------
Although the GUI application requires Chicken and libui, the suite itself is written in portable R7RS Scheme and comes with a CLI implementation as well. View your implementation documentation for details about installing R7RS libraries.

Usage
-----
Examples of the R7RS library usage:

    > (import (macduffie cipher))
    > (apply-cipher caesar-encipher #t "Hello, world!" 1)
    < "Ifmmp, xpsme!"
    > (apply-cipher caesar-decipher #t "Ifmmp, xpsme!" 1)
    < "Hello, world!"
    > (apply-cipher mono-encipher #t "The pen is mightier than the sword." "DONUTABCEFGHIJKLMPQRSVWXYZ")
    < "Rct ltj eq iebcretp rcdj rct qwkpu."
    > (apply-cipher mono-decipher #t "Rct ltj eq iebcretp rcdj rct qwkpu." "DONUTABCEFGHIJKLMPQRSVWXYZ")
    < "The pen is mightier than the sword."

CLI implementation:

    $ ciphermytext -p autokey 'This is an example of a sentence I woud like to encipher.' TRASH
    Myik pl hv wfsmcpb or p dibyefgr B abwh teyy wz mxgbdlrt.
    $ ciphermytext -p -d autokey 'Myik pl hv wfsmcpb or p dibyefgr B abwh teyy wz mxgbdlrt.' TRASH
    This is an example of a sentence I woud like to encipher.

Notice
------
These ciphers are generally not appropriate for real world strong cryptography. There are well known techniques for breaking most pen-and-paper ciphers, except the one-time-pad and stream ciphers. User beware: this software should be used as a toy and nothing more.

License
-------
Code is licensed under GPLv3 or later. See LICENSE for details.

